-> TD 5 <-

I - Le listing

//***********************************************************************
//*                                                                     *
//*                   Recherche des nombres premiers                    *
//*                                                                     *
//***********************************************************************


#include <stdio.h>
#include <conio.h>

struct boite
        {
        int valeur;
        boite* suivant;
        }; 
//déclarations des fonctions 
void fait_le_menage(boite*);
boite* inserer_boite(boite*,int);
void affiche_liste(boite*); 
int est_premier(boite*,int); 

//corps des fonctions : 
 
void fait_le_menage(boite* laboite)  // enl�ève toutes les variables dynamiques
                                     // ATTENTION : à la sortie, laboite pointe 
{                                    // n'importe o�ù !!!!! 
boite* courant=laboite; 
boite* ausuivant; 
while(courant!=NULL) 
        {
        ausuivant=courant-> suivant; 
        delete courant; courant=ausuivant; 
        }
}

inserer_boite(boite* laliste,int lavaleur) //ins�ère une boite de valeur "lavaleur" �à la fin de la liste
{
boite* index=laliste; 
boite* celui_d_avant; 
boite* le_petit_nouveau; 
//on cr�ée la boite 
le_petit_nouveau=new boite; 
le_petit_nouveau->valeur=lavaleur; 
le_petit_nouveau->suivant=NULL; 
if(laliste==NULL) //c'est la premi�ère boite 
        {
        return le_petit_nouveau;
        }
else              //c'est pas la premi�ère boite 
        {
//on va pointer sur le dernier élément 
        while(index!=NULL) 
                {
                celui_d_avant=index;
                index=index->suivant;
                }
//on met la dernière boite
        celui_d_avant->suivant=le_petit_nouveau;
        return laliste;
        }
}

void affiche_liste(boite* laboite)    //affiche... une liste
{
boite* latete=laboite;
while(latete!=NULL) 
        {
        printf("%d ",(*latete).valeur);
        latete=(*latete).suivant;
        }
}


int est_premier(boite* laliste,int lavaleur)    //regarde si "lavaleur" est un entier
{
boite* index=laliste;
while(index!=NULL)
        {
        if(((lavaleur%index->valeur)==0)&(index->valeur!=1)) return 0;
        index=index->suivant;
        }
return 1;
}

//fonction principale 
void main() 
{
int i,j;
boite* liste_premiers=NULL;
clrscr();
printf("Afficher les nombres premiers infèrieurs à quel nombre ? ");
scanf("%d",&i);
for(j=1;j<=i;j++)
        if(est_premier(liste_premiers,j)) liste_premiers=inserer_boite(liste_premiers,j);
affiche_liste(liste_premiers);
getch();
} 

II - Le programme complet qui marche bien et tout et tout

Cliquez ICI pour charger le code source.

Home Page. Index des TDS et TPs TD 3 TD 7